home *** CD-ROM | disk | FTP | other *** search
/ Your Choice 3 / Your Choice Software Collection 3.iso / os2_drv / sio130d / sioref.inf (.txt) < prev    next >
OS/2 Help File  |  1994-08-15  |  45KB  |  1,384 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Introduction ΓòÉΓòÉΓòÉ
  3.  
  4. Documentation of software is often more difficult than writing the program 
  5. itself (at least it is for this author).  I will do my best though.  But who do 
  6. I document for?  The user that is setting up a BBS just wants to get SIO 
  7. installed and to move on to more important things.  The user that is having 
  8. problems needs information about serial I/O communications in general and the 
  9. PC specifically. The application developer (programmer) needs detailed 
  10. information about each individual function and the information generated.  The 
  11. answer is, more than one manual is needed.  This manual is intended as a 
  12. reference for use by application programmers that desires to use SIO.  A 
  13. separate Users Manual is included in the distribution file(s).  This manual and 
  14. the software described is provided as is and with no guarantees.  Use at your 
  15. own risk. 
  16.  
  17.  
  18. ΓòÉΓòÉΓòÉ 1.1. What is SIO ΓòÉΓòÉΓòÉ
  19.  
  20. SIO is a Serial Input/Output (SIO) communications driver.  It provides an 
  21. interface between application programs and the serial communications hardware. 
  22.  
  23. SIO had been designed as a high performance replacement for the OS/2 device 
  24. driver COM.SYS.  See the Technical Reference Manual for information about the 
  25. known differences between COM.SYS and SIO.SYS. 
  26.  
  27. SIO works with 8250 (type) serial I/O devices.  Such devices include, but are 
  28. not limited to the 8250A, 16450, 16550, 16550A and the 82510.  If you have a PC 
  29. that is an IBM or near compatible which has a serial communication port, it is 
  30. likely that it contains one of these devices.  In addition, SIO supports some 
  31. intelligent serial I/O cards.  See "Intelligent Cards Supported" for additional 
  32. information.  SIO will identify the type of serial devices that it finds and 
  33. display them at load time. 
  34.  
  35. Like other Device Drivers, SIO will do very little standing alone.  There must 
  36. be an application(s) program that makes use of SIO's functions before one will 
  37. benefit from SIO. 
  38.  
  39.  
  40. ΓòÉΓòÉΓòÉ 2. Distribution and Ordering ΓòÉΓòÉΓòÉ
  41.  
  42. The entire package collectively known as SIO is ShareWare.  It is not free 
  43. software or freeware.  See LICENSE.TXT and ORDER.TXT for additional 
  44. information.  The ShareWare version of SIO is distributed electronically and 
  45. supports only 4 ports (registered versions can be ordered supporting up to 16 
  46. ports).  One may check their favorite electronic hangout for the latest version 
  47. of SIO.  The latest copy of the ShareWare version is always posted for 
  48. downloading from the BBS at 1-703-494-0098. 
  49.  
  50. Registered versions of SIO are distributed by US Mail, electronically mail and 
  51. from the SIO Distribution and Support BBS.  Users desiring to register 
  52. electronically, may call the BBS and register on line (1-703-494-0098) and 
  53. immediately download their registered version of SIO.  Use the ORDER command at 
  54. the main BBS prompt. 
  55.  
  56. Registrations/Orders can also be placed by phone, mail, FAX, and email.  See 
  57. the front cover of this manual for the phone numbers and addresses.  Also see 
  58. ORDER.TXT for and order form that may be used. 
  59.  
  60.  
  61. ΓòÉΓòÉΓòÉ 3. Support ΓòÉΓòÉΓòÉ
  62.  
  63. Extensive testing has been done to insure that this product works on the widest 
  64. possible range of OS/2 V2 (and up) systems.  In most cases, problems can be 
  65. resolved by reading this manual carefully. 
  66.  
  67. Registered users of SIO can update to the latest version using the BBS and its 
  68. UPDATE command.  All variations (number of ports) of SIO are available for 
  69. immediate download from the BBS by registered users. 
  70.  
  71. Support is provided in section 4 of the OS/2 Vendor Forum on CompuServe (GO 
  72. OS2BVEN).  Section 4 of the OS2BVEN Forum is dedicated to the support of SIO. 
  73.  
  74. In addition, support is provided by BBS, Email and FAX.  Voice support would 
  75. overwhelm the author and is not available.  If, after reading the manual 
  76. carefully, you are unable to resolve a problem, you may fill out PROBLEM.TXT 
  77. (adding information as necessary) and Email/FAX it to one of the following: 
  78.  
  79.  
  80.                Email
  81.             CompuServe 71154,575
  82.           Internet p00321@psilink.com
  83.             FAX 1-703-494-0595
  84.             BBS 1-703-494-0098
  85.  
  86. PROBLEM.TXT is included in the distribution ZIP. 
  87.  
  88.  
  89. ΓòÉΓòÉΓòÉ 4. Development and Debugging Tools ΓòÉΓòÉΓòÉ
  90.  
  91.  
  92. ΓòÉΓòÉΓòÉ 4.1. The Poor Man's Line Monitor (PMLM.EXE) ΓòÉΓòÉΓòÉ
  93.  
  94. Simply type PMLM, followed by return, at an OS/2 command line prompt for 
  95. example command lines. 
  96.  
  97. PMLM is basically of interest to developers of comm applications and those 
  98. providing technical support for those applications. This SIO utility is 
  99. released largely (in self defense) in the hope that some users can diagnose 
  100. their own problems.  PMLM's feature of saving trace information to disk will 
  101. only work with registered and beta versions of SIO. 
  102.  
  103. PMLM provides basic line monitoring for OS/2, DOS and Windows comm programs. 
  104. All characters sent or received by application programs are displayed in the 
  105. upper portion of the screen. Receive characters are displayed as "white on 
  106. blue" and transmitted characters are displayed "yellow on violet".  Line 
  107. signals, such as CTS are displayed as "dim white on red" when turned off and 
  108. "bright white on red" when turned on.  In addition, a signals transition to OFF 
  109. is displayed in lower case and a signals transition to ON is displayed in upper 
  110. case. 
  111.  
  112. Status information is displayed in the lower part of the screen. A bright white 
  113. display means the signal is on, a dim white indicates that the signal is off. 
  114. In addition, when bright, Rxoff and Txoff indicate the SIO has sent (Txoff) or 
  115. received (Rxoff) an Xoff, and an Xon is pending. 
  116.  
  117. When a DOS or Windows session uses a comm port, an additional line of signal 
  118. status appears.  This status line shows the state of the virtual UART's 
  119. signals.  Only the signals which MAY be different from the real UART's signals 
  120. are shown. 
  121.  
  122. "Rx Chars" and "Tx Chars" reflects the number of characters in SIO's receive 
  123. and transmit buffers respectively. 
  124.  
  125. The last line on the screen shows the keys (from the keyboard) that PMLM will 
  126. recognize.  The bright character shows the key to hit for the associated 
  127. function.  The font keys will not work in a windowed OS/2 session. 
  128.  
  129. PMLM's command line requires one parameter, the comm port number, and 
  130. optionally accepts an additional parameter giving a save trace file name.  For 
  131. example: 
  132.  
  133.     PMLM 1 COM1INFO.TRC 
  134.  
  135. will monitor COM1 and save ALL of the communications traffic in the file 
  136. COM1INFO.TRC.  The trace files created by PMLM contain exactly the same 
  137. information that is displayed by PMLM, video attributes and all. 
  138.  
  139.  
  140. ΓòÉΓòÉΓòÉ 4.2. Viewing saved trace files ΓòÉΓòÉΓòÉ
  141.  
  142. VIEWPMLM.EXE may be used to view trace files created by PMLM. VIEWPMLM.EXE 
  143. requires one parameter, the trace file name.  The user can use the keys UP, 
  144. DOWN, PAGEUP, PAGEDOWN, HOME, and END to navigate the saved trace file. 
  145. Registered SIO users may freely distribute VIEWPMLM.EXE (along with saved trace 
  146. files) to anyone for technical support purposes. 
  147.  
  148. VIEWPMLM can be used in native DOS, in DOS sessions under OS/2, and in OS/2 
  149. sessions.  This means that even those developers and support people need not 
  150. have OS/2 to view the captured communications data created by PMLM. 
  151.  
  152.  
  153. ΓòÉΓòÉΓòÉ 4.3. SIO's Utility (SU.EXE) ΓòÉΓòÉΓòÉ
  154.  
  155. This utility program has several useful commands.  You can obtain a list of the 
  156. available commands by typing SU at any command line prompt without any 
  157. parameters.  One very useful command is SU IRQS.  This command will show IRQs 
  158. that are currently free for use.  Commands are provided allowing user control 
  159. (missing from MODE) are available.  Status commands provide a wealth of 
  160. diagnostic information.  Some command line examples follow: 
  161.  
  162.     SU 1 MODE
  163.     su about
  164.     SU 1 lock 57600
  165.  
  166.  
  167. ΓòÉΓòÉΓòÉ 5. File System Requests ΓòÉΓòÉΓòÉ
  168.  
  169. SIO processes all file system requests made to it in one way or another.  The 
  170. following file system requests and how SIO processes them may be of use to the 
  171. application programmer. 
  172.  
  173.      INIT      Driver initialization.
  174.      Read      Data transfer from driver to program.
  175.      Input Status  Get input status.
  176.      Input Flush   Terminate all pending input requests.
  177.      Write      Data transfer from program to driver.
  178.      Output Status  Get output status.
  179.      Output Flush  Terminate all pending output requests.
  180.      Open      Open the device for use.
  181.      Close      Close the device.
  182.      IOCtl      Device I/O control commands.
  183.  
  184. Each of these file system requests are discussed in more detail in the 
  185. following sections. 
  186.  
  187.  
  188. ΓòÉΓòÉΓòÉ 5.1. Driver Initialization ΓòÉΓòÉΓòÉ
  189.  
  190. During device driver initialization the command line is parsed, memory for data 
  191. and control buffers is allocated and the system environment is examined. 
  192.  
  193. Buffers are allocated for the maximum number of ports that the installed 
  194. version of SIO can support (up to 16). 
  195.  
  196. The mouse port is determined and if it is a serial mouse, that port is excluded 
  197. from use by SIO. 
  198.  
  199. In the absence of any command line parameters, SIO will only support (look for) 
  200. COM1 and COM2 at the standard addresses.  COM3 and up will not be supported (or 
  201. looked at) unless they are specifically identified in the SIO command line. 
  202.  
  203.  
  204. ΓòÉΓòÉΓòÉ 5.2. Read ΓòÉΓòÉΓòÉ
  205.  
  206. If another read is already in progress, the process issuing the additional read 
  207. is blocked (suspended) until the previous read command completes.  When a read 
  208. is started, that read is not interrupted by additional reads.  If multiple 
  209. reads are issued, they are not necessarily processed in the order they were 
  210. issued. Thus, applications may not see the read requests complete in the order 
  211. in which they were issued. 
  212.  
  213. The conditions that control when the read will complete are controlled by the 
  214. active (current) DCB when the read is started. 
  215.  
  216.  
  217. ΓòÉΓòÉΓòÉ 5.3. Input Status ΓòÉΓòÉΓòÉ
  218.  
  219. This function returns with "device busy" set if there is no data in the receive 
  220. buffer.  That is, busy is returned if the process may be blocked if the 
  221. application issues a read command. 
  222.  
  223.  
  224. ΓòÉΓòÉΓòÉ 5.4. Input Flush ΓòÉΓòÉΓòÉ
  225.  
  226. This function causes the receive buffer to be cleared (made empty).  Any 
  227. threads that are blocked, waiting for a read, will be restarted when this 
  228. function is issued. 
  229.  
  230.  
  231. ΓòÉΓòÉΓòÉ 5.5. Write ΓòÉΓòÉΓòÉ
  232.  
  233. If another write is already in progress, the process issuing the additional 
  234. write is blocked (suspended) until the previous write command completes.  When 
  235. a write is started, that write is not interrupted by additional writes.  If 
  236. multiple writes are issued, they are not necessarily processed in the order 
  237. they were issued. Thus, applications may not see the write requests complete in 
  238. the order in which they were issued. 
  239.  
  240. The conditions that control when the write will complete are controlled by the 
  241. current DCB when the write is started. 
  242.  
  243.  
  244. ΓòÉΓòÉΓòÉ 5.6. Output Status ΓòÉΓòÉΓòÉ
  245.  
  246. This function returns with "device busy" set if the output buffer is more than 
  247. three quarters full.  That is, busy is returned if the process may be blocked 
  248. if the application issues a write command. 
  249.  
  250.  
  251. ΓòÉΓòÉΓòÉ 5.7. Output Flush ΓòÉΓòÉΓòÉ
  252.  
  253. This function causes the transmit buffer to be cleared (made empty).  Any 
  254. threads that are blocked, waiting for a write, will be restarted when this 
  255. function is issued. 
  256.  
  257.  
  258. ΓòÉΓòÉΓòÉ 5.8. Open ΓòÉΓòÉΓòÉ
  259.  
  260. There are basically two kinds of open.  They are an Initial Open and Additional 
  261. (shared) Opens. The IBM documentation calls the initial open a First Level 
  262. Open.  An Initial Open is an open that occurs when no other process has the 
  263. communications port open. An Additional Open is when an open occurs and another 
  264. process already has the communications port open.  For an Additional Open to 
  265. occur, the Initial Opener must have issued an open allowing shared access to 
  266. the port. 
  267.  
  268.  
  269. ΓòÉΓòÉΓòÉ 5.8.1. Initial Open ΓòÉΓòÉΓòÉ
  270.  
  271. The IRQ associated with the comm port is claimed (taken) when the Initial Open 
  272. occurs.  If the associated IRQ is not available a "Port in Use" error is 
  273. returned.  At the time of this writing, the IRQ is claimed allowing sharing. 
  274. However, the shared IRQ claiming is done to circumvent anomalies in the OS, and 
  275. in actuality SIO will not concurrently share an IRQ with another device driver. 
  276. The author found it necessary to claim (reset) all interrupts directed to the 
  277. interrupt service routine in order to prevent lock ups of a communications 
  278. port.  The IRQ mess may be cleaned up at a future date when the OS problems are 
  279. corrected. 
  280.  
  281. During Initial Opens, DTR and RTS are set in accordance with the current Device 
  282. Control Block (DCB) settings.  If DTR Control Mode is the "Enabled" option ( 
  283. bits 1 and 0 of the DCB Flags1 byte equal 01), then DTR is turned on. 
  284. Otherwise, DTR is unchanged by the Initial Open.  Similarly, if RTS Control 
  285. Mode is the "Enabled" option ( bits 7 and 6 of the DCB Flags1 byte equal 01), 
  286. then RTS is turned on.  Otherwise, RTS is unchanged by the Initial Open. 
  287.  
  288. The following actions also occur during an Initial Open: 
  289.  
  290.    The Xon and Xoff characters are set to 11h and 13h
  291.    respectively.
  292.  
  293.    The transmit and receive buffers and structures are cleared
  294.    and re-initialized.
  295.  
  296.    Status bits are reset.
  297.  
  298. If the Initial Opener is an OS/2 process (not a DOS process) then the Read time 
  299. out processing is set to "Normal" in the current DCB. 
  300.  
  301.  
  302. ΓòÉΓòÉΓòÉ 5.8.2. Additional Open ΓòÉΓòÉΓòÉ
  303.  
  304. A count of active opens is incremented.  No changes are made to current comm 
  305. settings. 
  306.  
  307.  
  308. ΓòÉΓòÉΓòÉ 5.9. Close ΓòÉΓòÉΓòÉ
  309.  
  310. There are two basic kinds of closes.  They are an Intermediate Close and a Last 
  311. Close. 
  312.  
  313.  
  314. ΓòÉΓòÉΓòÉ 5.9.1. Intermediate Close ΓòÉΓòÉΓòÉ
  315.  
  316. An intermediate close occurs when a process issues a close and other processes 
  317. still have the communications port opened.  This type of close simply 
  318. decrements an open count and returns.  No action or changes take place at the 
  319. communications port. 
  320.  
  321.  
  322. ΓòÉΓòÉΓòÉ 5.9.2. Last Close ΓòÉΓòÉΓòÉ
  323.  
  324. The last close occurs when a process issues a close and no other process has 
  325. the communications port open.  If there are any writes pending or incomplete, 
  326. the process is blocked (suspended) until the writes complete or time out.  If 
  327. 60 seconds pass with no activity at the communications port, the port is forced 
  328. to close and all writes are terminated.  If any processes are blocked 
  329. (suspended) waiting on a read, they are forced to return to the process that 
  330. issued the read. 
  331.  
  332. If either DTR Control Mode or RTS Control Mode are set to "Enabled" by the 
  333. current DCB, then the appropriate signal(s) is turned off. 
  334.  
  335. Finally, the IRQ is released back to the OS. 
  336.  
  337.  
  338. ΓòÉΓòÉΓòÉ 6. Device I/O Control (IOCtl) Commands ΓòÉΓòÉΓòÉ
  339.  
  340. The following Generic IOCtl functions are supported by SIO. 
  341.  
  342.    41h - Set Bit Rate
  343.    42h - Set Line Characteristics
  344.    43h - Extended Set Bit Rate
  345.    44h - Transmit Byte Immediate
  346.    45h - Set Break Off
  347.    46h - Set Modem Control Signals
  348.    47h - Hold Transmit
  349.    48h - Start Transmit (after hold)
  350.    4Bh - Set Break On
  351.    53h - Write Device Control Block (DCB)
  352.    54h - Write Extended Mode Parameters
  353.    61h - Query Current Bit Rate
  354.    62h - Query Line Characteristics
  355.    63h - Query Extended Bit Rate
  356.    64h - Query SIO Status
  357.    65h - Query Transmit Data Status
  358.    66h - Query Current Modem Output Control Signals
  359.    67h - Query Current Modem Input Signals
  360.    68h - Query Number of Characters in Receive Buffer
  361.    69h - Query Number of Characters in Transmit Buffer
  362.    6Dh - Query SIO Error
  363.    72h - Query SIO Event Information
  364.    73h - Read Device Control Block (DCB)
  365.    74h - Read Enhanced Mode Parameters
  366.  
  367. All IOCtl functions are called with a uniform set of parameters. This uniform 
  368. set of parameters is: 
  369.  
  370.    DWORD   Address of a data packet.
  371.    WORD    Size of the data packet in bytes.
  372.    DWORD   Address of the parameter packet.
  373.    WORD    Size of the parameter packet in bytes.
  374.    WORD    Function code.
  375.    WORD    Category code (01 for SIO).
  376.    WORD    Handle for the opened device.
  377.  
  378. Each IOCtl function may or may not have a data or parameter packet.  If a given 
  379. IOCtl function specifies a NULL parameter or data packet, the address of the 
  380. appropriate item must be NULL (zero) in the parameters.  Passing an invalid 
  381. data or parameter packet may result in a General Protection Fault. 
  382.  
  383. Each of these IOCtl commands are described in detail on the following sections. 
  384.  
  385.  
  386. ΓòÉΓòÉΓòÉ 6.1. 41h - Set Bit Rate ΓòÉΓòÉΓòÉ
  387.  
  388.             41h - Set Bit Rate 
  389.  
  390. Parameter Packet 
  391.  
  392.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  393.      Γöé         Item                Type     Γöé
  394.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  395.      Γöé Bit/Baud Rate             Γöé WORD     Γöé
  396.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  397.  
  398. "Bit Rate" is any number from 1 to 65535.  SIO does not attempt to validate a 
  399. given bit rate.  The minimum bit rate accepted by SIO is 50, the maximum for 
  400. this IOCtl function is 65535. 
  401.  
  402. Note that the hardware may not be able to generate the given bit rate.  For 
  403. example, if a computer has a standard communications card installed and if a 
  404. bit rate of 65500 is specified, the nearest bit rate that can be generated will 
  405. be set, 57600 in this case. 
  406.  
  407. To set bit rates in excess of 57600, see IOCtl function 43h, Extended Set Bit 
  408. Rate. 
  409.  
  410. Some commonly used bit rates that can be set with this function are: 
  411.  
  412.    50     2000
  413.    75     2400
  414.    110    3600
  415.    150    4800
  416.    300    7200
  417.    600    9600
  418.    1200    19200
  419.    1800    28800
  420.    2000    38400
  421.    2400    57600
  422.  
  423. Data Packet - None 
  424.  
  425.  
  426. ΓòÉΓòÉΓòÉ 6.2. 42h - Set Line Characteristics ΓòÉΓòÉΓòÉ
  427.  
  428.             42h - Set Line Characteristics 
  429.  
  430. Parameter Packet 
  431.  
  432.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  433.      Γöé         Item                Type     Γöé
  434.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  435.      Γöé Data Bits Per Character   Γöé BYTE     Γöé
  436.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  437.      Γöé Parity Setting            Γöé BYTE     Γöé
  438.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  439.      Γöé Stop Bit Setting          Γöé BYTE     Γöé
  440.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  441.  
  442. Data Bits Per Character may be 5, 7, or 8, all other values are invalid. 
  443.  
  444. Parity Setting may have the following values, all other values are invalid: 
  445.  
  446.      0 - No parity bit.
  447.      1 - Odd parity.
  448.      2 - Even parity.
  449.      3 - Mark parity (1).
  450.      4 - Space parity (0).
  451.  
  452. Stop Bit Setting may have the following values, all other values are invalid: 
  453.  
  454.      0 - 1 stop bit.
  455.      1 - 1.5 stop bit (valid with 5 data bit characters).
  456.      2 - 2 stop bits.
  457.  
  458. Data Packet - None 
  459.  
  460.  
  461. ΓòÉΓòÉΓòÉ 6.3. 43h - Extended Set Bit Rate ΓòÉΓòÉΓòÉ
  462.  
  463.             43h - Extended Set Bit Rate 
  464.  
  465. Parameter Packet 
  466.  
  467.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  468.      Γöé         Item                Type     Γöé
  469.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  470.      Γöé Bit/Baud Rate             Γöé DWORD    Γöé
  471.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  472.      Γöé Fraction                  Γöé BYTE     Γöé
  473.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  474.  
  475. "Bit Rate" is the desired bit/baud rate.  The maximum bit rate supported by SIO 
  476. is determined by the installed hardware. The IOCtl function "63h - Query 
  477. Extended Bit Rate" can be used to determine the maximum bit rate allowed for 
  478. the associated hardware. 
  479.  
  480. SIO does not attempt to validate a given bit rate.  This means that the 
  481. hardware may not be able to generate the given bit rate.  For example, if a 
  482. computer has a standard communications card installed and if a bit rate of 
  483. 65500 is specified, the nearest bit rate that can be generated will be set, 
  484. 57600 in this case. 
  485.  
  486. "Fraction" is used to set the fractional part of the bit rate when a high 
  487. degree of accuracy is needed.  As of this writing, SIO does not support a 
  488. "Fraction" other than zero. 
  489.  
  490. Some commonly used bit rates that can be set with this function are: 
  491.  
  492.    110    3600    115200
  493.    150    4800    230400
  494.    300    7200
  495.    600    9600
  496.    1200    19200
  497.    1800    28800
  498.    2000    38400
  499.    2400    57600
  500.  
  501. Data Packet - None 
  502.  
  503.  
  504. ΓòÉΓòÉΓòÉ 6.4. 44h - Transmit Byte Immediate ΓòÉΓòÉΓòÉ
  505.  
  506.             44h - Transmit Byte Immediate 
  507.  
  508. Parameter Packet 
  509.  
  510.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  511.      Γöé         Item                Type     Γöé
  512.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  513.      Γöé Character to Transmit     Γöé BYTE     Γöé
  514.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  515.  
  516. "Character to Transmit" will be the next character loaded into the UART for 
  517. transmission.  If a previous transmit immediate byte is still pending, it is 
  518. lost.  This function does not wait for the character to transmit before 
  519. returning. 
  520.  
  521. This function may be used by an application program as one of a set of 
  522. functions to implement its own Xon/Xoff type handshaking. 
  523.  
  524. Data Packet - None 
  525.  
  526.  
  527. ΓòÉΓòÉΓòÉ 6.5. 45h - Set Break Off ΓòÉΓòÉΓòÉ
  528.  
  529.             45h - Set Break Off 
  530.  
  531. Parameter Packet - None 
  532.  
  533.    Look!! No Parameter Packet! 
  534.  
  535. Data Packet 
  536.  
  537.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  538.      Γöé         Item                Type     Γöé
  539.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  540.      Γöé SIO Error Word            Γöé WORD     Γöé
  541.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  542.  
  543. See function 6Dh "Query SIO Error" for a description of the SIO Error Word. 
  544. This function does not reset any bits in the SIO Error Word. 
  545.  
  546.  
  547. ΓòÉΓòÉΓòÉ 6.6. 46h - Set Modem Control Signals ΓòÉΓòÉΓòÉ
  548.  
  549.             46h - Set Modem Control Signals 
  550.  
  551. Parameter Packet 
  552.  
  553.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  554.      Γöé         Item                Type     Γöé
  555.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  556.      Γöé DTR and RTS on mask       Γöé BYTE     Γöé
  557.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  558.      Γöé DTR and RTS off mask      Γöé BYTE     Γöé
  559.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  560.  
  561. Attempted changes in the the setting of signals that are used as flow control 
  562. signals are ignored.  The current DCB determines if either or both RTS and DTR 
  563. are used as a flow control signal. 
  564.  
  565. The setting of bit 0 affects DTR and the setting of bit 1 affects RTS.  Ones in 
  566. the "on mask" specifies which of the two signals are to be turned on, and zeros 
  567. in the "off mask" specify which of the two signals are to be turned off. 
  568.  
  569.    Some examples are:
  570.      On Mask     Off Mask
  571.      01h       0FFh    Turn DTR on
  572.      00h       0FEh    Turn DTR off
  573.      02h       0FFh    Turn RTS on
  574.      00h       0FDh    Turn RTS off
  575.      03h       0FFh    Turn RTS and DTR on
  576.      00h       0FCh    Turn RTS and DTR off
  577.  
  578. If both on and off are specified for the setting of a signal, the result is 
  579. undefined. 
  580.  
  581. Data Packet 
  582.  
  583.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  584.      Γöé         Item                Type     Γöé
  585.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  586.      Γöé SIO Error Word            Γöé WORD     Γöé
  587.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  588.  
  589. See function 6Dh "Query SIO Error" for a description of the SIO Error Word. 
  590. This function does not reset any bits in the SIO Error Word. 
  591.  
  592.  
  593. ΓòÉΓòÉΓòÉ 6.7. 47h - Hold Transmit ΓòÉΓòÉΓòÉ
  594.  
  595.             47h - Hold Transmit 
  596.  
  597. Parameter Packet - None 
  598.  
  599. Data Packet - None 
  600.  
  601. This function will disable the transmitter.  The transmitter will not be 
  602. enabled again unless IOCtl function 48h is issued.  If the transmitter is 
  603. already disabled, this call has no effect. 
  604.  
  605. This function can be used as part of a set that allows an application to 
  606. implement its own Xon/Xoff type handshaking. 
  607.  
  608. Note that this is different from how COM.SYS implements this function.  COM.SYS 
  609. will re-enable the transmitter if an Xon is received while SIO will not. 
  610.  
  611.  
  612. ΓòÉΓòÉΓòÉ 6.8. 48h - Start Transmit ΓòÉΓòÉΓòÉ
  613.  
  614.             48h - Start Transmit 
  615.  
  616. Parameter Packet - None 
  617.  
  618. Data Packet - None 
  619.  
  620. This function will enable the transmitter, usually following an IOCtl function 
  621. 47h.  If the transmitter is already enabled, this call has no effect. 
  622.  
  623. This function can be used as part of a set that allows an application to 
  624. implement its own Xon/Xoff type handshaking. 
  625.  
  626.  
  627. ΓòÉΓòÉΓòÉ 6.9. 4Bh - Set Break on ΓòÉΓòÉΓòÉ
  628.  
  629.             4Bh - Set Break on 
  630.  
  631. Parameter Packet - None 
  632.  
  633. Data Packet 
  634.  
  635.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  636.      Γöé         Item                Type     Γöé
  637.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  638.      Γöé SIO Error Word            Γöé WORD     Γöé
  639.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  640.  
  641. See function 6Dh "Query SIO Error" for a description of the SIO Error Word. 
  642. This function does not reset any bits in the SIO Error Word. 
  643.  
  644.  
  645. ΓòÉΓòÉΓòÉ 6.10. 53h - Write Device Control Block (DCB) ΓòÉΓòÉΓòÉ
  646.  
  647.             53h - Write Device Control Block (DCB) 
  648.  
  649. This is where the action is!  See also function 73h (Read DCB). 
  650.  
  651. Parameter Packet 
  652.  
  653.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  654.      Γöé         Item                Type     Γöé
  655.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  656.      Γöé Write Timeout             Γöé WORD     Γöé
  657.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  658.      Γöé Read Timeout              Γöé WORD     Γöé
  659.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  660.      Γöé Flags1                    Γöé BYTE     Γöé
  661.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  662.      Γöé Flags2                    Γöé BYTE     Γöé
  663.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  664.      Γöé Flags3                    Γöé BYTE     Γöé
  665.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  666.      Γöé Error Replacement Byte    Γöé BYTE     Γöé
  667.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  668.      Γöé Break Replacement Byte    Γöé BYTE     Γöé
  669.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  670.      Γöé Xon Character             Γöé BYTE     Γöé
  671.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  672.      Γöé Xoff Character            Γöé BYTE     Γöé
  673.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  674.  
  675. "Write Timeout"  The write timeout is given in hundredths of a second, relative 
  676. to zero.  That is, 0 specifies 0.01 seconds and 1 specifies 0.02 seconds. 
  677.  
  678. "Read Timeout" The read timeout is given in hundredths of a second, relative to 
  679. zero.  That is, 0 specifies 0.01 seconds and 1 specifies 0.02 seconds. 
  680.  
  681. "Flags1" is a bit flag.  The bits in the flag specify the following: 
  682.  
  683.    Bits 1 and 0     DTR Control Mode.
  684.         00 - Disable changing DTR during Open and Close.
  685.         01 - Enable Changing DTR during Open and Close.
  686.         10 - DTR used for input handshaking (not supported
  687.           by SIO).
  688.         11 - Invalid
  689.  
  690.    Bit 2,   Must be zero
  691.    Bit 3,   Off to ignore CTS.  Forced on if RTS is handshake.
  692.    Bit 4,   DSR is handshake.  Not supported by SIO.
  693.    Bit 5,   DCD required to transmit.  Not supported by SIO.
  694.    Bit 6,   DSR required to receive.
  695.    Bit 7,   Must be zero.
  696.  
  697. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  698.  
  699. "Flags2" is a bit flag.  The bits in the flag specify the following: 
  700.  
  701.    Bit 0,   SIO is to honor Xon/XOff received from remote.
  702.    Bit 1,   SIO may send Xon/Xoff to the remote.
  703.    Bit 2,   Enable error replacement character.  Not supported
  704.         by SIO.
  705.  
  706.    Bit 3,   Enable null stripping.  Not supported by SIO.
  707.    Bit 4,   Enable break replacement character.  Not supported
  708.         by SIO.
  709.  
  710.    Bit 5,   Enable Full duplex.  Half duplex is not supported
  711.         by SIO.
  712.  
  713.    Bits 7 and 6     RTS Control Mode
  714.         00 - Disable changing RTS during Open and Close.
  715.         01 - Enable Changing RTS during Open and Close.
  716.         10 - RTS used for input handshaking.
  717.         11 - Toggle on transmit (half duplex).  Not
  718.           supported by SIO.
  719.  
  720. "Flags3" is a bit flag.  The bits in the flag specify the following: 
  721.  
  722.    Bit 0,   Enable infinite write timeout processing.  When
  723.         set, a write timeout will not occur.
  724.  
  725.    Bits 2 and 1     Read timeout processing
  726.         00 - Invalid.
  727.         01 - Normal read time out.
  728.         10 - Wait for something.  Reads will return before
  729.           a timeout occurs if something received.
  730.         11 - No Wait.  Reads will return immediately with
  731.           any available data.
  732.  
  733.    Bits 4 and 3     FIFO Control
  734.         00 - No change in FIFO state.
  735.         01 - Disable FIFO buffers.
  736.         10 - Enable FIFO buffers.
  737.         11 - Dynamic enabling and disabling of FIFOS.
  738.  
  739.      **Note, SIO forces bits 4 and 3 to "10".
  740.  
  741.    Bits 6 and 5     Set receive trigger level
  742.         00 - 1 character.
  743.         01 - 4 characters.
  744.         10 - 8 characters.
  745.         11 - 14 characters.
  746.  
  747.      **Note, SIO forces bits 6 and 5 to "10".
  748.  
  749.    Bit 7        Transmit load count
  750.         0 -  Load 1 character.
  751.         1 -  Load 16 characters.
  752.  
  753.      **Note, SIO forces bit 7 to "1".
  754.  
  755. "Error Replacement Byte" Not supported by SIO. 
  756.  
  757. "Break Replacement Byte" Not supported by SIO 
  758.  
  759. "Xon Character" Any value, default is 11h. 
  760.  
  761. "Xoff Character" Any value, default is 13h. 
  762.  
  763. Data Packet - None 
  764.  
  765.  
  766. ΓòÉΓòÉΓòÉ 6.11. 54h - Write Extended Mode Parameters ΓòÉΓòÉΓòÉ
  767.  
  768.             54h - Write Extended Mode Parameters 
  769.  
  770. Parameter Packet 
  771.  
  772.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  773.      Γöé         Item                Type     Γöé
  774.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  775.      Γöé Enhanced Flags1           Γöé BYTE     Γöé
  776.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  777.      Γöé Reserved                  Γöé DWORD    Γöé
  778.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  779.  
  780. This function is not supported (ignored) by SIO.  However the bits are defined 
  781. here for completeness. 
  782.  
  783.    Enhanced Flags1
  784.    Bit 0 -  Enhanced mode hardware available (Query only 74h).
  785.    Bit 1 -  Enable enhanced mode.
  786.    Bits 3 and 2     DMA Receive Operation
  787.      00 - Disable DMA receive capability.
  788.      01 - Enable DMA receive capability.
  789.      10 - Dedicate a DMA channel to receive.
  790.      11 - Reserved.
  791.  
  792.    Bits 5 and 4     DMA Transmit Operation
  793.      00 - Disable DMA transmit capability.
  794.      01 - Enable DMA transmit capability
  795.      10 - Dedicate a DMA channel to transmit.
  796.      11 - Reserved.
  797.  
  798.    Bit 6 -  Receive in DMA mode (Query only, 74h).
  799.    Bit 7 -  Transmit in DMA mode (Query only, 74h).
  800.  
  801. Data Packet - None. 
  802.  
  803.  
  804. ΓòÉΓòÉΓòÉ 6.12. 61h - Query Current Bit Rate ΓòÉΓòÉΓòÉ
  805.  
  806.             61h - Query Current Bit Rate 
  807.  
  808. Parameter Packet - None. 
  809.  
  810. Data Packet 
  811.  
  812.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  813.      Γöé         Item                Type     Γöé
  814.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  815.      Γöé Bit/Baud Rate             Γöé WORD     Γöé
  816.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  817.  
  818. See function 41h for more information. 
  819.  
  820.  
  821. ΓòÉΓòÉΓòÉ 6.13. 62h - Query Line Characteristics ΓòÉΓòÉΓòÉ
  822.  
  823.             62h - Query Line Characteristics 
  824.  
  825. Parameter Packet - None. 
  826.  
  827. Data Packet 
  828.  
  829.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  830.      Γöé         Item                Type     Γöé
  831.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  832.      Γöé Data Bits Per Character   Γöé BYTE     Γöé
  833.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  834.      Γöé Parity Setting            Γöé BYTE     Γöé
  835.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  836.      Γöé Stop Bit Setting          Γöé BYTE     Γöé
  837.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  838.      Γöé Transmitting Break        Γöé BYTE     Γöé
  839.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  840.  
  841. See function 42h for a definition of Data, Parity and Stop Bits. 
  842.  
  843. "Transmitting Break" is set to 1 if a break is being transmitted.  Otherwise, 
  844. it is set to zero. 
  845.  
  846.  
  847. ΓòÉΓòÉΓòÉ 6.14. 63h - Query Extended Bit Rate ΓòÉΓòÉΓòÉ
  848.  
  849.             63h - Query Extended Bit Rate 
  850.  
  851. Parameter Packet - None 
  852.  
  853. Data Packet 
  854.  
  855.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  856.      Γöé         Item                Type     Γöé
  857.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  858.      Γöé Current Bit/Baud Rate     Γöé DWORD    Γöé
  859.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  860.      Γöé Fraction of Current       Γöé BYTE     Γöé
  861.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  862.      Γöé Minimum Bit/Baud Rate     Γöé DWORD    Γöé
  863.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  864.      Γöé Fraction of Minimum       Γöé BYTE     Γöé
  865.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  866.      Γöé Maximum Bit/Baud Rate     Γöé DWORD    Γöé
  867.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  868.      Γöé Fraction of Maximum       Γöé BYTE     Γöé
  869.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  870.  
  871. "Current Bit/Baud Rate" is a 32 bit integer defining the current bit rate. 
  872.  
  873. "Fraction of Current" is always 0 when returned by SIO. 
  874.  
  875. "Minimum Bit/Baud Rate" is the minimum value that can be passed to SIO as a 
  876. bit/baud rate. 
  877.  
  878. "Fraction of Minimum" is always 0 when returned by SIO. 
  879.  
  880. "Maximum Bit/Baud Rate" is the maximum value that can be passed to SIO as a 
  881. bit/baud rate. 
  882.  
  883. "Fraction of Maximum" is always 0 when returned by SIO. 
  884.  
  885.  
  886. ΓòÉΓòÉΓòÉ 6.15. 64h - Query SIO Status ΓòÉΓòÉΓòÉ
  887.  
  888.             64h - Query SIO Status 
  889.  
  890. Parameter Packet - None 
  891.  
  892. Data Packet 
  893.  
  894.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  895.      Γöé         Item                Type     Γöé
  896.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  897.      Γöé SIO Status Byte           Γöé BYTE     Γöé
  898.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  899.  
  900. "SIO Status Byte" is a bit flag.  The bits have the following meanings: 
  901.  
  902.    Bit 0 -  Set if SIO is waiting for CTS before transmitting.
  903.    Bit 1 -  Set if SIO is waiting for DSR before transmitting.
  904.    Bit 2 -  Set if SIO is waiting for DCD before transmitting.
  905.    Bit 3 -  Set if SIO is waiting because Xoff received or
  906.         transmitter is disabled (see function 47h).
  907.  
  908.    Bit 4 -  Reserved, not used by SIO.
  909.    Bit 5 -  Set if SIO is waiting because break is being sent.
  910.    Bit 6 -  Set if a transmit immediate is pending.
  911.    Bit 7 -  Reserved, not used by SIO.
  912.  
  913.  
  914. ΓòÉΓòÉΓòÉ 6.16. 65h - Query Transmit Data Status ΓòÉΓòÉΓòÉ
  915.  
  916.             65h - Query Transmit Data Status 
  917.  
  918. Parameter Packet - None. 
  919.  
  920. Data Packet 
  921.  
  922.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  923.      Γöé         Item                Type     Γöé
  924.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  925.      Γöé Transmit Status           Γöé BYTE     Γöé
  926.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  927.  
  928. "SIO Status Byte" is a bit flag.  The bits have the following meanings: 
  929.  
  930.    Bit 0 -  Set if write in progress or pending.
  931.    Bit 1 -  Set if any data is in the transmit buffer.
  932.    Bit 2 -  Set if UART is currently transmitting.
  933.    Bit 3 -  Set if a transmit immediate is pending.
  934.    Bit 4 -  Set if an Xon needs to be sent.
  935.    Bit 5 -  Set if an Xoff needs to be sent.
  936.    Bit 6 -  Reserved
  937.    Bit 7 -  Reserved
  938.  
  939.  
  940. ΓòÉΓòÉΓòÉ 6.17. 66h - Query Current Modem Output Control Signals ΓòÉΓòÉΓòÉ
  941.  
  942.             66h - Query Current Modem Output Control Signals 
  943.  
  944. Parameter Packet - None. 
  945.  
  946. Data Packet 
  947.  
  948.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  949.      Γöé         Item                Type     Γöé
  950.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  951.      Γöé Modem Output Signals      Γöé BYTE     Γöé
  952.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  953.  
  954. "Modem Output Signals" is a bit flag.  The bits have the following meanings: 
  955.  
  956.    Bit 0 -  Set if DTR is currently on.
  957.    Bit 1 -  Set if RTS is currently on.
  958.    Bits 2-7  Reserved, set to zero by SIO.
  959.  
  960.  
  961. ΓòÉΓòÉΓòÉ 6.18. 67h - Query Current Modem Input Signals ΓòÉΓòÉΓòÉ
  962.  
  963.             67h - Query Current Modem Input Signals 
  964.  
  965. Parameter Packet - None. 
  966.  
  967. Data Packet 
  968.  
  969.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  970.      Γöé         Item                Type     Γöé
  971.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  972.      Γöé Modem Input Signals       Γöé BYTE     Γöé
  973.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  974.  
  975. "Modem Output Signals" is a bit flag.  The bits have the following meanings: 
  976.  
  977.    Bits 0-3  Reserved, set to zero by SIO.
  978.    Bit 4 -  Clear To Send (CTS) is active.
  979.    Bit 5 -  Data Set Ready (DSR) is active.
  980.    Bit 6 -  Ring Indicator (RI), trailing edge detected.
  981.    Bit 7 -  Data Carrier Detect (DCD) is active.
  982.  
  983.  
  984. ΓòÉΓòÉΓòÉ 6.19. 68h - Query Number of Characters in Receive Buffer ΓòÉΓòÉΓòÉ
  985.  
  986.             68h - Query Number of Characters in Receive Buffer 
  987.  
  988. Parameter Packet - None. 
  989.  
  990. Data Packet 
  991.  
  992.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  993.      Γöé         Item                Type     Γöé
  994.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  995.      Γöé Number of Bytes Buffered  Γöé WORD     Γöé
  996.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  997.      Γöé Byte Size of the Buffer   Γöé WORD     Γöé
  998.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  999.  
  1000. Self explaining. 
  1001.  
  1002.  
  1003. ΓòÉΓòÉΓòÉ 6.20. 69h - Query Number of Characters in Transmit Buffer ΓòÉΓòÉΓòÉ
  1004.  
  1005.             69h - Query Number of Characters in Transmit Buffer 
  1006.  
  1007. Parameter Packet - None. 
  1008.  
  1009. Data Packet 
  1010.  
  1011.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1012.      Γöé         Item                Type     Γöé
  1013.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1014.      Γöé Number of Bytes Buffered  Γöé WORD     Γöé
  1015.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1016.      Γöé Byte Size of the Buffer   Γöé WORD     Γöé
  1017.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1018.  
  1019. Self explaining. 
  1020.  
  1021.  
  1022. ΓòÉΓòÉΓòÉ 6.21. 6Dh - Query SIO Error ΓòÉΓòÉΓòÉ
  1023.  
  1024.             6Dh - Query SIO Error 
  1025.  
  1026. Parameter Packet - None. 
  1027.  
  1028. Data Packet 
  1029.  
  1030.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1031.      Γöé         Item                Type     Γöé
  1032.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1033.      Γöé SIO Error Word            Γöé WORD     Γöé
  1034.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1035.  
  1036. "SIO Error Word" is a bit flag.  The bits have the following meaning: 
  1037.  
  1038.    Bit 0 -  Set if a buffer overrun has occurred.
  1039.    Bit 1 -  Set if an overrun occurred at the UART.
  1040.    Bit 2 -  Set if the UART detected a parity error.
  1041.    Bit 3 -  Set if the UART detected a framing error.
  1042.    Bits 4-15 Reserved, set to zero by SIO.
  1043.  
  1044. All bits of the SIO Error Word are reset prior to returning to the caller. 
  1045.  
  1046.  
  1047. ΓòÉΓòÉΓòÉ 6.22. 72h - Query SIO Event Information ΓòÉΓòÉΓòÉ
  1048.  
  1049.             72h - Query SIO Event Information 
  1050.  
  1051. Parameter Packet - None. 
  1052.  
  1053. Data Packet 
  1054.  
  1055.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1056.      Γöé         Item                Type     Γöé
  1057.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1058.      Γöé SIO Event Word            Γöé WORD     Γöé
  1059.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1060.  
  1061. "SIO Event Word" is a bit flag.  The bits have the following meaning: 
  1062.  
  1063.    Bit 0 -  Set when a receive character is transferred from
  1064.         the UART to the receive buffer.
  1065.    Bit 1 -  Set when a receive (Read) timeout occurs.
  1066.    Bit 2 -  Set if the transmit buffer is empty.
  1067.    Bit 3 -  Set if Clear To Send (CTS) has changed state.
  1068.    Bit 4 -  Set if Data Set Ready (DSR) has changed state.
  1069.    Bit 5 -  Set if Data Carrier Detect (DCD) has changed
  1070.         state.
  1071.    Bit 6 -  Set if a break has been detected.
  1072.    Bit 7 -  Set if a framing, parity, or overrun error has
  1073.         occurred.
  1074.    Bit 8 -  Set if trailing edge of Ring Indicator (RI) has
  1075.         occurred.
  1076.    Bits 9-15 Reserved, set to zero by SIO.
  1077.  
  1078. All bits are reset prior to returning to the caller. 
  1079.  
  1080.  
  1081. ΓòÉΓòÉΓòÉ 6.23. 73h - Read Device Control Block (DCB) ΓòÉΓòÉΓòÉ
  1082.  
  1083.             73h - Read Device Control Block (DCB) 
  1084.  
  1085. Parameter Packet - None. 
  1086.  
  1087. Data Packet 
  1088.  
  1089.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1090.      Γöé         Item                Type     Γöé
  1091.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1092.      Γöé Write Timeout             Γöé WORD     Γöé
  1093.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1094.      Γöé Read Timeout              Γöé WORD     Γöé
  1095.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1096.      Γöé Flags1                    Γöé BYTE     Γöé
  1097.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1098.      Γöé Flags2                    Γöé BYTE     Γöé
  1099.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1100.      Γöé Flags3                    Γöé BYTE     Γöé
  1101.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1102.      Γöé Error Replacement Byte    Γöé BYTE     Γöé
  1103.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1104.      Γöé Break Replacement Byte    Γöé BYTE     Γöé
  1105.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1106.      Γöé Xon Character             Γöé BYTE     Γöé
  1107.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1108.      Γöé Xoff Character            Γöé BYTE     Γöé
  1109.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1110.  
  1111. See function 53h for a description of the parameters. 
  1112.  
  1113.  
  1114. ΓòÉΓòÉΓòÉ 6.24. 74h - Read Enhanced Mode Parameters ΓòÉΓòÉΓòÉ
  1115.  
  1116.             74h - Read Enhanced Mode Parameters 
  1117.  
  1118. Parameter Packet - None. 
  1119.  
  1120. Data Packet 
  1121.  
  1122.      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1123.      Γöé         Item                Type     Γöé
  1124.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1125.      Γöé Enhanced Flags1           Γöé BYTE     Γöé
  1126.      Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1127.      Γöé Reserved                  Γöé DWORD    Γöé
  1128.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1129.  
  1130. See function 54h for a description of the Flags1 Byte.  I/O Port and IRQ 
  1131. Assignments 
  1132.  
  1133. I have obtained the following information from various sources. Accuracy is not 
  1134. guaranteed.  In fact, nothing in this document is guaranteed.  Addresses and 
  1135. IRQs for COM1 and COM2 
  1136.  
  1137.    COM1 uses 03F8h and IRQ4
  1138.    COM2 uses 02F8h and IRQ3
  1139.  
  1140. Defacto standard for COM3 and COM4 for PC, XT and AT 
  1141.  
  1142.    COM3 uses 03E8h and IRQ4
  1143.    COM4 uses 02E8h and IRQ3
  1144.  
  1145. Addresses and IRQ for COM3 through COM8 on the PS/2 
  1146.  
  1147.    COM3 uses 3220h and IRQ3
  1148.    COM4 uses 3228h and IRQ3
  1149.    COM5 uses 4220h and IRQ3
  1150.    COM6 uses 4228h and IRQ3
  1151.    COM7 uses 5220h and IRQ3
  1152.    COM8 uses 5228h and IRQ3
  1153.  
  1154. All PCs (known to the author) prior to the PS/2 and EISA only use 10 bits to 
  1155. address hardware I/0 ports.  Systems prior to the PS/2 and EISA can not address 
  1156. the standard PS/2 addresses for COM3 through COM8.  If an AT or below attempts 
  1157. to address COM3 through COM8 using the PS/2 addresses, only the low 10 bits of 
  1158. the address are used.  That is, the high digit of the hexadecimal address will 
  1159. be ignored.  This means that any reference to COM3 through COM8 will actually 
  1160. address ports 220h through 22Fh on older PCs. 
  1161.  
  1162. One should avoid expansion boards that use ports 220h through 22Fh unless the 
  1163. expansion board is a serial I/O board. 
  1164.  
  1165. SIO will (attempt to) determine the hardware architecture (ISA/EISA and PS/2) 
  1166. that it is being executed on and use the appropriate hardware port addresses 
  1167. for COM1 thru COM4 as defaults. 
  1168.  
  1169.  
  1170. ΓòÉΓòÉΓòÉ 7. Serial I/O Chips ΓòÉΓòÉΓòÉ
  1171.  
  1172. The following is a collection of comments developed from hearsay, random 
  1173. documents, experience, and technical specifications. So, take it with a grain 
  1174. of salt.  Order information from the various manufactures if you want accurate 
  1175. information. 
  1176.  
  1177. Very good reference books are available from National Semiconductor 
  1178. Corporation.  They cover most of the SIO devices (also called UARTs) that you 
  1179. will find in many PCs and clones.  I am not sure that books can be ordered 
  1180. directly from National semiconductor. They may require that you get it from a 
  1181. distributor.  In any case, the address on the back of the one manual is: 
  1182.  
  1183.    National Semiconductor Corporation
  1184.    2900 Semiconductor Drive
  1185.    P.O. Box 58090
  1186.    Santa Clara, CA 95052-8090
  1187.  
  1188.    Tel:(408)721-5000
  1189.    TWX:(910)339-9240
  1190.  
  1191.  
  1192. ΓòÉΓòÉΓòÉ 7.1. 8250 ΓòÉΓòÉΓòÉ
  1193.  
  1194. As best that I know, the 8250 was the first SIO chip (integrated circuit) that 
  1195. was used by the IBM PC and many clones.  In my opinion, it was a poor choice on 
  1196. the part of IBM.  I feel many superior devices, at comparable prices, were 
  1197. readily available. At that time, I feel the 8251A or the 8530 would have been 
  1198. better choices.  But, they used the 8250 and therefore we must use it.  From a 
  1199. hardware standpoint the 8250 is a relatively slow device. It is advisable that 
  1200. programmers not perform successive inputs or outputs to this device.  It seems 
  1201. that software programs can load the various registers of the 8250 faster than 
  1202. it can process the information.  The 8250 had a total of 7 registers.  The 
  1203. specifications state that 56kb is the maximum baud rate. 
  1204.  
  1205.  
  1206. ΓòÉΓòÉΓòÉ 7.2. 8250A ΓòÉΓòÉΓòÉ
  1207.  
  1208. I believe the 8250A is the 8250 with some bug fixes.  I have no idea what the 
  1209. bugs may have been.  A quick glance at the specifications shows the speed of 
  1210. the 8250 and 8250A to be much the same.  The 8250A added an 8th register.  This 
  1211. additional register enables software to detect if an 8250 is installed.  The 
  1212. specifications state that 56kb is the maximum baud rate. 
  1213.  
  1214.  
  1215. ΓòÉΓòÉΓòÉ 7.3. 16450 ΓòÉΓòÉΓòÉ
  1216.  
  1217. The 16450 seems to be a speeded up version of the 8250A.  There is no direct 
  1218. way (that I know of) for software to detect the difference between an 8250A and 
  1219. a 16450.  I believe the 16450 was developed to eliminate the need for software 
  1220. to insert delays between successive accesses to the device.  The specifications 
  1221. indicate the 16450 is a much faster device than its predecessors. The 
  1222. additional speed is only the speed at which the processor can access the 
  1223. device.  The maximum baud rate for the 16450 is still stated at 56kb.  However, 
  1224. I have been told by some people that they have run the 16450 successfully at 
  1225. much higher speeds. I do not believe there was ever a 16450A. 
  1226.  
  1227.  
  1228. ΓòÉΓòÉΓòÉ 7.4. 16C451 ΓòÉΓòÉΓòÉ
  1229.  
  1230. The 16C451 is a CMOS version of the 16450.  CMOS is a term for the material and 
  1231. manufacturing process used to make the part. CMOS typically uses less power 
  1232. than other technologies.  If you are not designing hardware, you should view 
  1233. the 16C451 as a 16450. 
  1234.  
  1235.  
  1236. ΓòÉΓòÉΓòÉ 7.5. 16550 (Non A) ΓòÉΓòÉΓòÉ
  1237.  
  1238. It is hard to find a 16550 (Non A).  I was told by National Semiconductor that 
  1239. they did everything they could to get all 16550s back.  SIO will detect a 16550 
  1240. and tell you if you have one.  I am told that the 16550 was installed in early 
  1241. PS/2 systems.  The 16550 was the first shot at a FIFOed version of the 8250 
  1242. family from National semiconductor.  However, I was told by National 
  1243. Semiconductor that the FIFOs of the 16550 are not reliable and they should not 
  1244. be enabled.  SIO will treat a 16550 like a 16450.  In this mode, they are 
  1245. reliable.  National Semiconductor would not provide me with a specification for 
  1246. the 16550.  However, I suspect its maximum baud rate is the same as the 16550A 
  1247. which is 256kb. 
  1248.  
  1249.  
  1250. ΓòÉΓòÉΓòÉ 7.6. 16550A, 16550AF and 16550AFN ΓòÉΓòÉΓòÉ
  1251.  
  1252. In the manuals that I have, National Semiconductor does not explain the 
  1253. differences between the 16550A and the 16550AF.  I suspect the AF part may have 
  1254. a few bug fixes.  I believe the N in AFN describes packaging, ceramic versus 
  1255. plastic, DIP versus surface mount etc. 
  1256.  
  1257. In the opinion of the author, there is no substitute for the 16550A (and its 
  1258. successors) in the 8250 type series.  The 16550A is compatible with most 
  1259. software written for the entire family of 8250 type devices.  Programs that are 
  1260. 16550A aware can provide much improved performance over previous devices. 
  1261.  
  1262. The maximum baud rate for the 16550A is specified at 256kb. However, due to the 
  1263. hardware design of the PC et al, 115kb is the maximum baud rate that can be 
  1264. programmed by software. 
  1265.  
  1266. The 16550A can be plugged into the same socket that contains an 8250, 8250A or 
  1267. 16450.  If your SIO expansion board has the SIO chips in sockets, you can 
  1268. upgrade to the 16550A by simply removing the old chips and replacing them with 
  1269. 16550As. 
  1270.  
  1271. The key to the performance increase of the 16550A is its FIFOs. It has 16 byte 
  1272. FIFOs for both transmit and receive data. 
  1273.  
  1274.  
  1275. ΓòÉΓòÉΓòÉ 7.7. 16550s Made by Western Digital ΓòÉΓòÉΓòÉ
  1276.  
  1277. I have been told, but I have not verified for myself, that 16550s made by 
  1278. Western Digital have a problem with their FIFOs when working at 2400 baud or 
  1279. below. 
  1280.  
  1281.  
  1282. ΓòÉΓòÉΓòÉ 7.8. 16C551 ΓòÉΓòÉΓòÉ
  1283.  
  1284. The 16C551 is a CMOS version of the 16550AF.  See the above description of the 
  1285. 16C451 for a discussion of CMOS.  Do not feel you need to upgrade from a 16550A 
  1286. or AF to a 16C551.  There is no gain from an existing users point of view. 
  1287.  
  1288.  
  1289. ΓòÉΓòÉΓòÉ 7.9. 16C552 ΓòÉΓòÉΓòÉ
  1290.  
  1291. The 16C552 is two 16C551s on a single chip. 
  1292.  
  1293. The 16C551 is a CMOS version of the 16550AF.  See the above description of the 
  1294. 16C451 for a discussion of CMOS.  Do not feel you need to upgrade from a 16550A 
  1295. or AF to a 16C551.  There is no gain from an existing users point of view. 
  1296.  
  1297.  
  1298. ΓòÉΓòÉΓòÉ 7.10. 16C554 ΓòÉΓòÉΓòÉ
  1299.  
  1300. The 16C554 is four 16C551s on a single chip. 
  1301.  
  1302. The 16C551 is a CMOS version of the 16550AF.  See the above description of the 
  1303. 16C451 for a discussion of CMOS.  Do not feel you need to upgrade from a 16550A 
  1304. or AF to a 16C551.  There is no gain from an existing users point of view. 
  1305.  
  1306.  
  1307. ΓòÉΓòÉΓòÉ 7.11. 82510 ΓòÉΓòÉΓòÉ
  1308.  
  1309. I believe Intel is the only company that manufactures the 82510. The 82510 is 
  1310. feature rich with several modes of operation.  Its default mode is to operate 
  1311. as a 16450.  The 82510 has a 4 byte FIFO for both transmit and receive data.  A 
  1312. 4 byte FIFO is sufficient to provide significant performance over a basic 
  1313. 16450. 
  1314.  
  1315. The 82510 is small in size.  Therefore, it is found in many lap tops. 
  1316.  
  1317. The 82510 is somewhat of a sleeper.  I believe it would be much more widely 
  1318. used if Intel had promoted it more.  However, given a choice between the 82510 
  1319. and the 16550A, I would select the 16550A. 
  1320.  
  1321.  
  1322. ΓòÉΓòÉΓòÉ 8. Multi-Port Serial I/0 Cards ΓòÉΓòÉΓòÉ
  1323.  
  1324. I have received many requests for information about multi-port serial I/O card. 
  1325. I will describe the boards that I know about (or have heard about) here.  I 
  1326. will add to the list as I receive precise information from manufactures, users, 
  1327. or I develop it myself. 
  1328.  
  1329.  
  1330. ΓòÉΓòÉΓòÉ 8.1. STB 4COM  (ISA buss) ΓòÉΓòÉΓòÉ
  1331.  
  1332. I am very impressed with the STB 4COM card, they have almost got it.  Yes, its 
  1333. the same company that makes the VGA cards.  The 4COM card uses a 16554 which is 
  1334. the equivalent of four 16550A. Comm ports can use IRQs 2/9, 3, 4, 5, 10, 11, 
  1335. 12, and 15.  Any or all ports can share IRQs, and they have done this right.  I 
  1336. tested SIO with all four ports of the 4COM on IRQ12 and they worked correctly. 
  1337. The user can select any of the following I/O port address for a comm port: 3F8, 
  1338. 2F8, 3E8, 2E8, 1A8, 1E8, 1F8, 2A8.  The 4COM card is priced at $110 and I 
  1339. ordered mine from Prerapture Solutions which can be reached by telephone at 
  1340. 1-919-286-1502 for information and foreign callers.  In the US orders can be 
  1341. placed by calling 1-800-735-5266.  Their mailing address is: 
  1342.  
  1343.    Prerapture Solutions
  1344.    1806 Albany St.
  1345.    Durham NC 27705-3135
  1346.  
  1347.  
  1348. ΓòÉΓòÉΓòÉ 8.2. Gtek BBS550 (ISA buss) ΓòÉΓòÉΓòÉ
  1349.  
  1350. The Gtek BBS550 is a communications card with the equivalent of 8 16550s (in 
  1351. reality two 16C552s) UARTs.  Where were these cards 5 years ago!  Like the STB 
  1352. 4COM, I am very impressed with the BBS550.  It has a wide range of selectable 
  1353. I/O port address, some in the 16 bit range (above 3FFh) which can be very 
  1354. useful.  I tested the board with all 8 ports installed using IRQ3 (although I 
  1355. never had more than 3 ports active at the same time).  The board performed well 
  1356. using shared IRQs. 
  1357.  
  1358. The BBS550 has 8 RJ-45 connectors (10 pin), 6 of which comes directly off the 
  1359. back of the card.  The other two RJ-45 connectors are internal and special 
  1360. cables with grommets are supplier for these 2 ports.  The cables supplied with 
  1361. the BBS550 expands the RJ-45 out to standard DB-25 connectors. 
  1362.  
  1363. Gtek is located in St. Louis Mississippi.  Their phone number is 800-282-4835 
  1364. or 601-467-8048. 
  1365.  
  1366.  
  1367. ΓòÉΓòÉΓòÉ 8.3. Neotech Quad Serial (MCA buss) ΓòÉΓòÉΓòÉ
  1368.  
  1369. Well, I just got my first PS/2 system (for testing of SIO) and I am using the 
  1370. NeoTech Quad Serial card in that system.  What can I say, it works beautifully 
  1371. and interrupt sharing has never been a problem on MCA systems.  This card (as 
  1372. shipped) came with four individual 16450 chips installed, but they were in 
  1373. sockets so I installed 16550 UARTs before I installed the card.  The card has 
  1374. one large connector on the back of the card and the supplied cable expands that 
  1375. to 4 standard DB-25 connectors.  Those of you needing a good 4 port card for an 
  1376. MCA system contact: 
  1377.  
  1378.    Neotech Inc
  1379.    30295 Solon Industrial Pkwy.
  1380.    Solon, Ohio 44139
  1381.  
  1382.    Voice   (216) 248-4114
  1383.    FAX    (216) 248-5701
  1384.